package com.open.api.wechat.pub.request.condition;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;

/**
 * @author : zhaoxuan
 * @date : 2021/7/6 11:10
 * @description : WeChatTemplateMessageCondition
 * @version: 1.0
 */
@NoArgsConstructor
public class WeChatTemplateMessageCondition {

    /**
     * 是	接收者openid
     */
    @Getter
    @Setter
    @JsonProperty("touser")
    private String toUser;

    /**
     * 是	模板ID
     */
    @Getter
    @Setter
    @JsonProperty("template_id")
    private String templateId;

    /**
     * 否	模板跳转链接（海外帐号没有跳转能力）
     */
    @Getter
    @Setter
    private String url;

    /**
     * 否	跳小程序所需数据，不需跳小程序可不用传该数据
     */
    @Getter
    @JsonProperty("miniprogram")
    private MiniProgram miniProgram;

    /**
     * 是	模板数据
     */
    @Getter
    private MsgData data = MsgData.builder().build();


    public void setMiniProgram(String appId, String pagePath){
        MiniProgram miniProgram = MiniProgram.builder().appId(appId).pagePath(pagePath).build();
        this.miniProgram = miniProgram;
    }

    public void setFirst(String value, String color){
        data.setFirst(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword1(String value, String color){
        data.setKeyword1(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword2(String value, String color){
        data.setKeyword2(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword3(String value, String color){
        data.setKeyword3(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword4(String value, String color){
        data.setKeyword4(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword5(String value, String color){
        data.setKeyword5(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword6(String value, String color){
        data.setKeyword6(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword7(String value, String color){
        data.setKeyword7(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword8(String value, String color){
        data.setKeyword8(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword9(String value, String color){
        data.setKeyword9(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setKeyword10(String value, String color){
        data.setKeyword10(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    public void setRemark(String value, String color){
        data.setRemark(MsgData.MsgKeyword.builder().value(value).color(color).build());
    }

    @Data
    @Builder
    private static class MiniProgram{

        /**
         * 是	所需跳转到的小程序appid（该小程序appid必须与发模板消息的公众号是绑定关联关系，暂不支持小游戏）
         */
        @JsonProperty("appid")
        private String appId;

        /**
         * 否	所需跳转到小程序的具体页面路径，支持带参数,（示例index?foo=bar），要求该小程序已发布，暂不支持小游戏
         */
        @JsonProperty("pagepath")
        private String pagePath;
    }

    @Data
    @Builder
    private static class MsgData{
        private MsgKeyword first;
        private MsgKeyword keyword1;
        private MsgKeyword keyword2;
        private MsgKeyword keyword3;
        private MsgKeyword keyword4;
        private MsgKeyword keyword5;
        private MsgKeyword keyword6;
        private MsgKeyword keyword7;
        private MsgKeyword keyword8;
        private MsgKeyword keyword9;
        private MsgKeyword keyword10;
        private MsgKeyword remark;

        @Data
        @Builder
        private static class MsgKeyword{
            /**
             * 是	模板内容
             */
            private String value;
            /**
             * 否	模板内容字体颜色，不填默认为黑色
             */
            private String color;
        }
    }
}
